home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / bin / lorder < prev    next >
Text File  |  2009-05-08  |  3KB  |  107 lines

  1. #!/bin/sh -
  2. #    $OpenBSD: lorder.sh,v 1.7 1997/01/25 21:16:44 deraadt Exp $
  3. #    $NetBSD: lorder.sh,v 1.3 1995/04/24 07:38:52 cgd Exp $
  4. #
  5. # Copyright (c) 1990, 1993
  6. #    The Regents of the University of California.  All rights reserved.
  7. #
  8. # Redistribution and use in source and binary forms, with or without
  9. # modification, are permitted provided that the following conditions
  10. # are met:
  11. # 1. Redistributions of source code must retain the above copyright
  12. #    notice, this list of conditions and the following disclaimer.
  13. # 2. Redistributions in binary form must reproduce the above copyright
  14. #    notice, this list of conditions and the following disclaimer in the
  15. #    documentation and/or other materials provided with the distribution.
  16. # 3. All advertising materials mentioning features or use of this software
  17. #    must display the following acknowledgement:
  18. #    This product includes software developed by the University of
  19. #    California, Berkeley and its contributors.
  20. # 4. Neither the name of the University nor the names of its contributors
  21. #    may be used to endorse or promote products derived from this software
  22. #    without specific prior written permission.
  23. #
  24. # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  25. # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  26. # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  27. # ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  28. # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  29. # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  30. # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  31. # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  32. # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  33. # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  34. # SUCH DAMAGE.
  35. #
  36. #    @(#)lorder.sh    8.1 (Berkeley) 6/6/93
  37. #
  38.  
  39. # only one argument is a special case, just output the name twice
  40. case $# in
  41.     0)
  42.         echo "usage: lorder file ...";
  43.         exit ;;
  44.     1)
  45.         echo $1 $1;
  46.         exit ;;
  47. esac
  48.  
  49. # temporary files
  50. TDIR=/tmp/_lorder$$
  51. R=$TDIR/reference
  52. S=$TDIR/symbol
  53.  
  54. um=`umask`
  55. umask 022
  56. if ! mkdir $TDIR ; then
  57.     echo temporary directory exists $TDIR
  58.     exit 1
  59. fi
  60. umask $um
  61.  
  62. # remove temporary files on HUP, INT, QUIT, PIPE, TERM
  63. trap "rm -rf $TDIR; exit 1" HUP INT QUIT PIPE TERM
  64.  
  65. # if the line ends in a colon, assume it's the first occurrence of a new
  66. # object file.  Echo it twice, just to make sure it gets into the output.
  67. #
  68. # if the line has " T " or " D " it's a globally defined symbol, put it
  69. # into the symbol file.
  70. #
  71. # if the line has " U " it's a globally undefined symbol, put it into
  72. # the reference file.
  73. #
  74. # The awk nastyness is to rearrange the output of GNU nm to be more to the
  75. # seddery's liking.
  76. if nm --version 2>/dev/null | grep -q GNU; then
  77.   FILT='BEGIN{FS="[: ]"}{if (seen[$1]) print $0; else print $1 ":"; print $0; seen[$1]=1}'
  78. else
  79.   FILT='{print $0}'
  80. fi
  81.  
  82. ${NM:-nm} -go $* | awk "$FILT" | sed "
  83.     /:$/ {
  84.         s/://
  85.         s/.*/& &/
  86.         p
  87.         d
  88.     }
  89.     / [TD] / {
  90.         s/:.* [TD] / /
  91.         w $S
  92.         d
  93.     }
  94.     / U / {
  95.         s/:.* U / /
  96.         w $R
  97.     }
  98.     d
  99. "
  100.  
  101. # sort symbols and references on the first field (the symbol)
  102. # join on that field, and print out the file names.
  103. sort -k 2 -o $R $R
  104. sort -k 2 -o $S $S
  105. join -j 2 -o 1.1 2.1 $R $S
  106. rm -rf $TDIR
  107.